require(['./config'],()=>{
    require(['template','header','shopping'],(template,header)=>{
        class Buy {
            constructor () {
                this.getData().then(()=>{
                    this.play()
                    this.addToCart()
                })
            }
            getData () {
                const id = location.search.slice(4)
                return new Promise((resolve,reject)=>{
                    $.get('http://xiongmaoyouxuan.com/api/detail',{ id },resp=>{
                        console.log(resp)
                        if(resp.code===200){
                            const {
                                id,
                                photo,
                                title,
                                tbItemReview,
                                tbOriginPrice,
                                price,
                                couponValue,
                                commodityTypeName,
                            } = resp.data.detail
                            // console.log(photo)
                            this.detail ={
                                id,
                                photo,
                                title,
                                tbItemReview,
                                tbOriginPrice,
                                price,
                                couponValue,
                                commodityTypeName,
                            }
                            $('#showList').html(
                                template('showTemplate',{ list:photo })
                            )
                            $('#informationList').html(
                                template('informationTemplate',{ ...this.detail })
                            )
                            resolve()
                        }
                    })
                })
            }
            addToCart () {
                $('#add-to-cart-btn').on('click', () => {
                    alert('添加成功')
                    // localStorage.setItem('cart',JSON.stringify(this.detail))
                    //先取，取出来之后判断购物车里是否有数据
                    //如果没有，那就存入当前数据，但是也是存一个数组，为下一次做准备
                    //如果有了，那就取出来的数据push当前这一条在重新存进去
                    let cart = localStorage.getItem('cart')
                    if(cart){
                        //购物车已经有数据
                        cart = JSON.parse(cart)
                        //要判断购物车里已存在的数据是否包含当前数据
                        //如果已存在，将数量加1（或者加数量输入框的值）
                        //如果不存在才push
                        const isExist = cart.some(shop=>{
                            return shop.id===this.detail.id
                        })
                        if (isExist) {
                            // 商品已存在
                            // 用map来修改数组，满足条件就count加完再return，不满的话直接return shop本身
                            cart = cart.map(shop=>{
                                if(shop.id === this.detail.id){
                                    shop.count++
                                }
                                return shop
                            })
                        }else{
                            //当前商品还没有被加过购物车
                            //当push到数组中，也要加上默认的数量，和默认选中
                            cart.push({...this.detail,count:1,check:true})
                        }
                        localStorage.setItem('cart',JSON.stringify(cart))
                        
                    }else{
                        //购物车为空
                        // 把this.detail展开，再加上count字段，把这个对象放进数组，存进localStorage
                        localStorage.setItem('cart',JSON.stringify([ { ...this.detail , count: 1 , check:true }] ))
                    }
                    header.calcCartCount()
                })
            }
            play(){
                $("#exzoom").exzoom({
                    autoPlay: false
                })
            }
        }
        new Buy()
    })
})